package main

// map是一种无序的基于key-value的数据结构，Go语言中的map是引用类型，必须初始化才能使用。
// import (
// 	"fmt"
// 	"math/rand"
// 	"sort"
// 	"time"
// )

// func main() {
// 	// map 的是初次声明之后，进行初始化
// 	scoreMap := make(map[string]int, 8)
// 	scoreMap["张三"] = 90
// 	scoreMap["小明"] = 100
// 	fmt.Println(scoreMap)
// 	fmt.Println(scoreMap["小明"])
// 	fmt.Printf("type of a:%T\n", scoreMap)

// 	// map也支持在声明的时候填充元素
// 	userInfo := map[string]string{
// 		"username": "pprof.cn",
// 		"password": "123456",
// 	}
// 	fmt.Println(userInfo) //

// 	// 判断某个键是否存在
// 	v, ok := scoreMap["张三"]
// 	if ok {
// 		fmt.Println(v)
// 	} else {
// 		fmt.Println("查无此人")
// 	}

// 	fmt.Println("map的遍历等功能的使用")
// 	// 遍历for range 遍历map
// 	for k, v := range scoreMap {
// 		fmt.Println(k, v)
// 	}
// 	for k := range scoreMap {
// 		fmt.Println(k)
// 	}
// 	// 注意：遍历map时的元素顺序与添加键值对的顺序无关、

// 	delete(scoreMap, "小明") //将小明:100从map中删除
// 	for k, v := range scoreMap {
// 		fmt.Println(k, v)
// 	}

// 	fmt.Println("按照指定的顺序遍历数组")

// 	rand.Seed(time.Now().UnixNano())
// 	var scoreMap1 = make(map[string]int, 200)
// 	for i := 0; i < 100; i++ {
// 		key := fmt.Sprintf("stu %02d", i)
// 		value := rand.Intn(100)
// 		scoreMap1[key] = value
// 	}
// 	// 取出map中所有的key存在keys中
// 	var keys = make([]string, 0, 200)
// 	for key := range scoreMap1 {
// 		keys = append(keys, key)
// 	}

// 	// 对切片进行排序
// 	sort.Strings(keys)
// 	for _, key := range keys {
// 		fmt.Println(key, scoreMap1[key])
// 	}

// }
